<?php
/**
 * Administra las categorias de las empresas
 *@author Luis Gabriel Rodriguez <luisgabriel84@gmail.com>
 */

/**
 *  Administra las categorias de las empresas
 */
class CategoriesController extends AppController {

	var $name = 'Categories';
        /**
        * @var array
        * @access public
        */
	var $helpers = array('Html', 'Form');
	
        function beforeFilter()
        {
            //$this->Auth->allow('*');
        }
 
        /**
         * Genera el menu por seccion
         * @param integer $seccion seccion para la cual se quiere generar el menu
         * @return array $categorias
         */
        function menu_seccion($seccion = null)
        {
            if(isset($this->params['requested']))
            {
                $this->Categoy->recursive=0;
                $categories = $this->Category->find('all',array('conditions'=>array('Category.parent_id'=>1,'Category.section'=>$seccion),'order'=>array('Category.name ASC')));
                return $categories;
            }
        }
        /**
         *  Contar el numero de sub items de un menu
         * @param integer $id Identificador del menu
         * @return integer $totalChildren
         */
        function countChildren($id)
        {
            return $totalChildren = $this->Category->childCount($id);
        }

        /**
         *
         * Retornar las subcategorias de una seccion
         * @param integer $id Identificador del menu
         */
        function subcats($id)
        {
                $this->Category->recursive=0;
                return $this->Category->find('all', array('order'=>array('Category.name ASC'),'conditions'=>array('Category.parent_id'=>$id)));

        }
        /**
         * Mostrar las sub categorias de una categoria
         * @param integer $id Identificador de la categoria principal
         * @return array $categories listado de categorias
         */
        function  sub_categorias($id =null)
	{
		if(isset($this->params['requested']))
		{
			$categorias = $this->Category->find('all', array('conditions'=>array('parent_id'=>$id,'active'=>1)));
			return $categorias;
		}
	}

         /**
         * Mostrar las sub categorias de una categoria para el administrador
         * @param integer $id Identificador de la categoria principal
         * @return array $categories listado de categorias
         */
        function  sub_categorias_admin($id =null)
	{
		if(isset($this->params['requested']))
		{
			$categorias = $this->Category->find('all', array('conditions'=>array('Category.parent_id'=>$id)));
			return $categorias;
		}
	}
        /**
         * Listado de categorias para el administrador
         */

	function admin_index() {
                $this->layout='admin';
		$this->Category->recursive = 0;
                $this->paginate['conditions']=array(array('Category.parent_id <>'=>0));
		$this->set('categories', $this->paginate());
	}
         /**
         * Agregar categorias para el administrador
         */
	function admin_add() {
                $this->layout='admin';
		if (!empty($this->data)) {
			$this->Category->create();
                        $this->data['Category']['slug']= $this->slug($this->data['Category']['name']);
			if ($this->Category->save($this->data)) {
				$this->Session->setFlash(__('The Category has been saved', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('The Category could not be saved. Please, try again.', true));
			}
		}
		$parents = $this->Category->Parent->find('list');
		$this->set(compact('parents'));
	}
         /**
         * Modificar categorias para el administrador
         * @param integer $id Identificador de la categoria
         */
	function admin_edit($id = null) {
                $this->layout='admin';
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid Category', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                         $this->data['Category']['slug']= $this->slug($this->data['Category']['name']);
			if ($this->Category->save($this->data)) {
				$this->Session->setFlash(__('The Category has been saved', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('The Category could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Category->read(null, $id);
		}
		$parents = $this->Category->Parent->find('list');
		$this->set(compact('parents'));
	}
         /**
         * Eliminarcar categorias para el administrador
         * @param integer $id Identificador de la categoria
         */
	function admin_delete($id = null) {
            
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for Category', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Category->del($id)) {
			$this->Session->setFlash(__('Category deleted', true));
			$this->redirect(array('action'=>'index'));
		}
	}

}
?>